The present invention relates to multiplier-accumulator (“MAC”) blocks, and more particularly, the present invention relates to a more efficient way in which to make use of multipliers in a MAC block.
A MAC block, sometimes referred to as a digital signal processing (“DSP”) block is DSP circuitry that implements a group of multipliers and other components such as arithmetic components. MAC blocks may be used in the processing of many different types of applications, including graphics applications, networking applications, communications applications, and video applications. Because of the versatility of MAC blocks, and of multipliers in general, manufacturers of programmable logic devices, such as Altera® Corporation of San Jose, Calif., have recently begun manufacturing programmable logic devices that, in addition to programmable logic circuitry, also contain hardware DSP circuitry in the form of MAC blocks. The MAC blocks of programmable logic devices provide a way in which certain functionality of a user's design may be implemented using less space on the programmable logic device and result in a faster execution time because of the nature of DSP circuitry relative to programmable logic circuitry.
MAC blocks are made of a number of multipliers and adders. Whenever one or more of the multipliers in a particular MAC block need to be used, the entire MAC block is placed into a mode of operation based on how many of the multipliers are to be used for the particular implementation. For example, if the MAC block contains a total of four 18 bit by 18 bit multipliers, and if a particular design requires the use of a single 18 bit by 18 bit multiplier, then the MAC block is put into a mode of operation such that each of the 18 bit by 18 bit multipliers can only be used individually in an 18 bit by 18 bit multiply mode. Therefore, the remaining three multipliers are limited for use only in 18 bit by 18 bit multiply modes. This results in an inefficient limitation on the potential use of the remaining multipliers in the MAC block.
It would therefore be desirable to implement a MAC block such that the multipliers in the MAC block may be used in different modes of operation simultaneously.